package com.jiangyg.mall.order.service;

import com.jiangyg.mall.order.dto.OrderReleaseDTO;
import com.jiangyg.mall.order.dto.OrderSubmitDTO;
import com.jiangyg.mall.order.dto.SeckillOrderDTO;
import com.jiangyg.mall.order.enums.OrderStatus;
import com.jiangyg.mall.order.vo.OrderConfirmVO;

/**
 * 类描述：订单
 *
 * @author jiangyg
 * @email email@jiangyg.com
 * @date 2021-10-18 22:14:52
 */
public interface OrderService {

    /**
     * 功能描述：订单确认页面显示数据
     *
     * @param memberId 会员ID
     * @return 确认订单数据
     */
    OrderConfirmVO info(Long memberId) throws Exception;

    /**
     * 功能描述：提交订单
     *
     * @param dto            参数
     * @param memberId       会员ID
     * @param memberUsername 会员名称
     */
    void submit(OrderSubmitDTO dto, Long memberId, String memberUsername) throws Exception;

    /**
     * 功能描述：订单释放
     *
     * @param dto      参数
     * @param memberId 会员ID
     */
    void release(OrderReleaseDTO dto, Long memberId);

    /**
     * 功能描述：查询订单状态
     *
     * @param orderId 订单ID
     * @return 订单状态
     */
    OrderStatus selectOrderStatus(Long orderId);

    /**
     * 功能描述：创建秒杀订单
     *
     * @param dto 秒杀订单参数
     */
    void seckill(SeckillOrderDTO dto);

}

